package cc.rengu.igas.bomp.facade;

import cc.rengu.igas.bomp.facade.request.*;
import cc.rengu.igas.bomp.facade.response.*;
import cc.rengu.igas.bomp.facade.result.Result;

/**
 * 商户服务管理类接口.
 */
public interface BompMchntManageService {

    /**
     * 商户基本信息管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntBaseInfoManageResponse> mchntBaseInfoManage(MchntBaseInfoManageRequest request);

    /**
     * 商户签约信息管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntSignInfoManageResponse> mchntSignInfoManage(MchntSignInfoManageRequest request);

    /**
     * 商户结算信息管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntSettleInfoManageResponse> mchntSettleInfoManage(MchntSettleInfoManageRequest request);


    /**
     * 商户影像信息管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntImageInfoManageResponse> mchntImageInfoManage(MchntImageInfoManageRequest request);

    /**
     * 商户产品信息管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntProdInfoManageResponse> mchntProdInfoManage(MchntProdInfoManageRequest request);

    /**
     * 商户提现费率管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntWithdrawManageResponse> mchntWithdrawManage(MchntWithdrawManageRequest request);

    /**
     * 商户状态管理
     *
     * @param request 请求
     * @return 响应
     */
    Result<MchntStatusManageResponse> mchntStatusManage(MchntStatusManageRequest request);

    /**
     * 联网核查
     *
     * @param request 请求
     * @return 响应
     */
    Result<OnlineVerificationResponse> onlineVerification(OnlineVerificationRequest request);

    /**
     * 征信查询
     *
     * @param request 请求
     * @return 响应
     */
    Result<CreditReportQueryResponse> creditReportQuery(CreditReportQueryRequest request);

    /**
     * 账户实名认证
     *
     * @param request 请求
     * @return 响应
     */
    Result<AcctRealNameAuthResponse> acctRealNameAuth(AcctRealNameAuthRequest request);

    /**
     * OCR识别
     *
     * @param request 请求
     * @return 响应
     */
    Result<OcrResponse> ocrService(OcrRequest request);


    /**
     * 结算账户核心签约
     *
     * @param request 请求
     * @return 响应
     */
    Result<SettleAccountSignResponse> settleAccountSign(SettleAccountSignRequest request);

    /**
     * 图片或文件上传下载
     *
     * @param request 请求
     * @return 响应
     */
    Result<ImageFileUpDownloadResponse> imageFileUpDownload(ImageFileUpDownloadRequest request);

}
